#ifndef FITNESS_ENTERA_CU
#define FITNESS_ENTERA_CU

#include <climits>
#include "fitnessEntera.cuh"

float calcularFitnessEnteraCPU(int* poblacion, int posicion){
	float fitness = std::numeric_limits<float>::min();
	float fitnessParcial[cantComputadoras];
	//inicializo fitness parcial
	for(int i = 0; i < cantComputadoras; i++){
		fitnessParcial[i] = 0;
	}
	for(int i = 0; i < cantTareas; i++){
		fitnessParcial[poblacion[posicion + i]] = fitnessParcial[poblacion[posicion + i]] + matrizTiempos[i][poblacion[posicion + i]];
	}
	//Me quedo con la computadora que mas tardo en procesar las tareas asignadas
	for(int i = 0; i < cantComputadoras; i++){
        if(fitnessParcial[i] > fitness)
            fitness = fitnessParcial[i];
	}
	return -fitness;
}

__device__ float calcularFitnessEnteraGPU(int* poblacion, int posicion){
	float fitness = INT_MIN;
	float fitnessParcial[cantComputadorasDevice];
	//inicializo fitness parcial
	for(int i = 0; i < cantComputadorasDevice; i++){
		fitnessParcial[i] = 0;
	}
	for(int i = 0; i < cantTareasDevice; i++){
		fitnessParcial[poblacion[posicion + i]] = fitnessParcial[poblacion[posicion + i]] + matrizTiemposDevice[i][poblacion[posicion + i]];
	}
	//Me quedo con la computadora que mas tardo en procesar las tareas asignadas
	for(int i = 0; i < cantComputadorasDevice; i++){
        if(fitnessParcial[i] > fitness)
            fitness = fitnessParcial[i];
	}
	return -fitness;
}

#endif

